Hypervisors are mechanisms running above the operating or supervisory control of the system. The term may be applied to software, but the traditional model is a hardware virtualization. In modern application processors, Hypervisors are used to create virtual environments to run different guest operating systems. In servers, this may be to have more than one instance of the same operating system to allow more than one ‘session’ on the network. In desktop systems, this may be to have different operating systems running to allow users to use applications from different operating systems. In embedded systems like phones, this may be to have a real-time operating system and an application operating system. In each case of application processors, there is assumed to be an MMU (Memory Management Unit) which plays a part in this virtualization.
A hypervisor requires a secure environment for its execution so that a guest program is not allowed to accidentally or maliciously gain control of the underlying hardware system and resources. In many systems, a secure environment may be provided by a memory management unit (MMU) that includes permission controls for various blocks of system memory and other resources.
The term virtualization really means that each operating system believes it has sole control of the processor and system, although it likely sees a subset of the real system. The virtualization usually includes a dividing of the real physical memory, a dividing or virtualization of the peripherals of the system (whether a peripheral shows up only in one such virtual environment or is shared such that each thinks it has sole control) as well as a dividing of time. The virtualization of peripherals is needed to allow sharing of communications such as networks. Whether this is done in hardware or in software depends on the system. In most systems, access to shared resources simply ‘traps’ into hypervisor software which can see everything.
For security and other related uses, a more limited hypervisor model has been used. For example, TrustZone in ARMv6 and later processors and SMM (system management mode) in Intel x86 processors. ARM (advanced RISC machine) processors are licensed to various vendors by ARM Ltd. In these systems, there are mechanisms to trap into these special operating systems, dividing the system into two environments. For TrustZone, it is a more traditional virtual environment, but with many limitations and restrictions. For SMM, there is no virtualization at all.
In general, the use of security protection in deeply embedded systems has existed for a while but traditionally has been limited to a supervisor vs. user modal and/or an MPU (memory protection unit). Neither mechanism provides true isolation or separation and certainly not any kind of virtualized environment. The most common historical technique for safety and security has been to use two separate processors (a security processor and a normal processor), where each has its own environment and resources. In many cases, the security processor can see all of the resources of the normal processor, but not the reverse. This partial virtualization has also been used in non-embedded systems, especially as it is needed to allow sharing of resources such as network and maybe screen.
Other features of the present embodiments will be apparent from the accompanying drawings and from the detailed description that follows.